<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        test();
        function test(){
            console.log('i am a function')
        }

        test();

        //第一行不解析 

        //第二行解析  
        // 在浏览器中声明一个变量 这个变量其实就是在内存中
        //开辟一个空间  然后将一个函数赋值给这个变量 也就是把内存的地址
        // 交给这个空间

        // 不解析  

        /* 代码执行 */


        //test();因为加了() 就是当做函数来调用 
        //预解析的时候我们已经生命了一个 test变量 并且赋值了一个
        //函数  所以这里边正常调用 

        // 第二步因为预解析的时候已经 赋值 
        // 直接到第三步  
        // 跟第一步一样  当做一个函数来调用 

    </script>
</body>
</html>